home *** CD-ROM | disk | FTP | other *** search
/ ftp.mactech.com 2010 / ftp.mactech.com.tar / ftp.mactech.com / machack / Hacks97 / WarriorsProgress.sit / Warrior’s Progress / source code / Source / Libraries / Files / FileLocation.h < prev    next >
Text File  |  1997-06-28  |  3KB  |  101 lines

  1. // FileLocation.h
  2.  
  3. #ifndef FileLocation_h
  4. #define FileLocation_h
  5.  
  6. #ifndef VolumeID_h
  7. #include "VolumeID.h"
  8. #endif
  9. #ifndef DirectoryID_h
  10. #include "DirectoryID.h"
  11. #endif
  12. #ifndef ConstPString_h
  13. #include "ConstPString.h"
  14. #endif
  15. #ifndef FileType_h
  16. #include "FileType.h"
  17. #endif
  18. #ifndef FileSignature_h
  19. #include "FileSignature.h"
  20. #endif
  21. #ifndef ScriptID_h
  22. #include "ScriptID.h"
  23. #endif
  24. #ifndef FileID_h
  25. #include "FileID.h"
  26. #endif
  27. #ifndef Directory_h
  28. #include "Directory.h"
  29. #endif
  30.  
  31. class PString;
  32.  
  33. class FileLocation: public FSSpec
  34.   {
  35.     private:
  36.         static void ThrowError( OSErr );
  37.  
  38.     public:
  39.         FileLocation();
  40.         FileLocation( const FSSpec& source )    : FSSpec( source )        {}
  41.  
  42.         FileLocation( Directory );
  43.         FileLocation( Directory, ConstPString );
  44.         
  45.         VolumeID Volume() const                                { return VolumeID::Make( vRefNum ); }
  46.         DirectoryID ParentID() const                        { return DirectoryID::Make( parID ); }
  47.         Directory Parent() const                            { return Directory( Volume(), ParentID() ); }
  48.         ConstPString Name() const                            { return name; }
  49.         
  50.         void Set( Directory, ConstPString );
  51.         void operator=( Directory );
  52.         
  53.         void SetVolume( VolumeID v )                        { vRefNum = v.RefNum(); };
  54.         void SetParentID( DirectoryID d )                { parID = d.Number(); };
  55.         void SetParent( Directory d )                        { vRefNum = d.Volume().RefNum(); parID = d.ID().Number(); };
  56.         void SetName( ConstPString );
  57.         void SetName( ConstPString, uint32 );
  58.  
  59.         Directory AsDirectory() const;
  60.         
  61.         bool NameIsValid() const;
  62.         void SetToValidName( ConstPString );
  63.         void SetToValidName();
  64.         
  65.         bool operator==( const FileLocation& ) const;
  66.         bool operator!=( const FileLocation& r ) const        { return !(*this == r); }
  67.         
  68.         bool Exists() const;
  69.         void FindUnusedName();
  70.         
  71.         void CreateFile( FileType,
  72.                               ScriptID script = ScriptID::Make( smSystemScript ) ) const;
  73.                               
  74.         void CreateFile( FileType,
  75.                               FileSignature,
  76.                               ScriptID script = ScriptID::Make( smSystemScript ) ) const;
  77.         
  78.         Directory CreateDirectory( ScriptID script = ScriptID::Make( smSystemScript ) ) const;
  79.         
  80.         void Delete() const;
  81.         void Lock() const;
  82.         void Unlock() const;
  83.  
  84.         void MoveFrom( const FileLocation& ) const;
  85.         void SwapWith( const FileLocation& ) const;
  86.         
  87.         bool IsRoot() const                    { return ParentID() == DirectoryID::AboveRoot(); }
  88.         
  89.         void Up();
  90.         void Down( ConstPString );
  91.         void Sideways( ConstPString );
  92.         
  93.         FileLocation Child( ConstPString ) const;
  94.         FileLocation Sibling( ConstPString ) const;
  95.         
  96.         DirectoryID GetDirectoryID() const;
  97.         FileID GetFileID() const;
  98.   };
  99.  
  100. #endif
  101.